3a Context menu — surface, item states, separator metrics

One generic surface: a vertical list of labelled rows with optional boundary marks, so the same component serves session rows and text-field cut/copy/paste. The removal verb stays #E6E6E9 at rest and only turns #E5604D under a tinted hover, so nothing pulls the eye to the bottom of the menu before the pointer gets there.

PINNED
{{ s.t }} {{ s.m }}
RECENT
rate limiter backoff 2h
fix webpack chunk split 5h
{{ s.t }} {{ s.m }}
Open in split
Rename session
Move to group · Infra
Move to group · Billing platform
Remove from group
Archive session
Remove from recents
STATES
Rename session
Rest
h 28 · pad 10 · Inter 12.5 · #E6E6E9
Rename session
Hover — inner pill
fill #2A2E33 · r6 · inset 4 · pressed #33383E
Remove from recents
Removal verb — rest
#E6E6E9 · no red until hover
Remove from recents
Removal verb — hover
fill rgba(229,96,77,.12) · text #E5604D
Remove from group
Disabled
#6B7177 · no hover, no press
Rename session
Archive session
Separator
1px #2A2E33 · inset 8 · margin 4 / 4
Surface: #1E2125 on 1px #2A2E33, r10, pad 5 / 0, shadow 0 8px 24px -8px #000, min 180 / max 260 with the group name ellipsizing.